home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / tsbgex / src / fish / eval.c < prev    next >
Encoding:
Text File  |  1994-11-16  |  1.7 KB  |  100 lines

  1. eval(r1, g1, b1, r2, g2, b2)
  2. int r1, g1, b1, r2, g2, b2;
  3. {
  4.     int val;
  5. #if 1
  6.     int y1, y2, dr, dg, db, dy;
  7.     
  8.     /* normalize */
  9.     y1 = r1 * r1 + g1 * g1 + b1 * b1;
  10.     if (y1 != 0){
  11.         r1 = r1 * r1 * 1000;
  12.         r1 /= y1;
  13.         g1 = g1 * g1 * 1000;
  14.         g1 /= y1;
  15.         b1 = b1 * b1 * 1000;
  16.         b1 /= y1;
  17.     }
  18.     y2 = r2 * r2 + g2 * g2 + b2 * b2;
  19.     if (y2 != 0){
  20.         r2 = r2 * r2 * 1000;
  21.         r2 /= y2;
  22.         g2 = g2 * g2 * 1000;
  23.         g2 /= y2;
  24.         b2 = b2 * b2 * 1000;
  25.         b2 /= y2;
  26.     }
  27.  
  28.     dr = r2 - r1;
  29.     dr *= dr;
  30.     dg = g2 - g1;
  31.     dg *= dg;
  32.     db = b2 - b1;
  33.     db *= db;
  34.     dy = y2 - y1;
  35.     dy *= dy;
  36.     dy /= 1000;
  37.     val = (10*dr + 3*dg + 3*db) + 10*dy;
  38. #endif
  39. #if 0
  40.     int v1, v2, val;
  41.     int y1, cr1, cb1, y2, cr2, cb2;
  42.     int dcr, dcb, dy;
  43.     
  44.     /* RGB --> YCrCb */
  45.     y1 = g1 * 587 + r1 * 299 + b1 * 144;
  46.     cr1 = g1 * -419 + r1 * 500 + b1 * -81;
  47.     cb1 = g1 * -332 + r1 * -169 + b1 * 500;
  48.     y2 = g2 * 587 + r2 * 299 + b2 * 144;
  49.     cr2 = g2 * -419 + r2 * 500 + b2 * -81;
  50.     cb2 = g2 * -332 + r2 * -169 + b2 * 500;
  51.  
  52.     dcr = cr2 - cr1;
  53.     dcr *= dcr;
  54.     dcr /= 1000;
  55.     dcb = cb2 - cb2;
  56.     dcb *= dcb;
  57.     dcb /= 1000;
  58.     dy = y2 - y1;
  59.     dy *= dy;
  60.     dy /= 1000;
  61.     
  62.     val = dcr + dcb + dy * 2;
  63. #endif
  64. #if 0
  65.     int y1, y2, dr, dg, db, dy;
  66.     
  67.     /* normalize */
  68.     y1 = g1 * 587 + r1 * 299 + b1 * 144;
  69.     if (y1 != 0){
  70.         r1 = r1 * 299 * 1000;
  71.         r1 /= y1;
  72.         g1 = g1 * 587 * 1000;
  73.         g1 /= y1;
  74.         b1 = b1 * 144 * 1000;
  75.         b1 /= y1;
  76.     }
  77.     y2 = g2 * 587 + r2 * 299 + b2 * 144;
  78.     if (y2 != 0){
  79.         r2 = r2 * 299 * 1000;
  80.         r2 /= y2;
  81.         g2 = g2 * 587 * 1000;
  82.         g2 /= y2;
  83.         b2 = b2 * 144 * 1000;
  84.         b2 /= y2;
  85.     }
  86.  
  87.     dr = r2 - r1;
  88.     dr *= dr;
  89.     dg = g2 - g1;
  90.     dg *= dg;
  91.     db = b2 - b1;
  92.     db *= db;
  93.     dy = y2 - y1;
  94.     dy *= dy;
  95.     dy /= 1000;
  96.     val = (dr + dg + db)*110 + dy*10;
  97. #endif
  98.     return (val);
  99. }
  100.